import { defineStore } from "pinia";
interface ICartProduct {
  id: number;
  name: string;
  url: string;
  price: number;
  state: boolean;
  num: number;
}
interface IState {
  list: Array<ICartProduct>;
}
//官方建议取名遵从 useXXXStore 形式
export const useCounterStore = defineStore("cart", {
  state: (): IState => {
    //数据
    return {
      list: [], //购物车商品列表
    };
  },
  actions: {
    //不用定义mutations
    addProduct(product: ICartProduct) {
      //购物车添加方法
      this.list.push(product); //这里可以用this
    },
    clearProduct(){
      this.list = []
    }
  },
  getters: {
    cartList: (state) => state.list, //cartList不能和上面List名字一样
  },
  // 使用该插件，开启数据缓存
  persist: {
    //这里存储默认使用的是session
    enabled: true,
    strategies: [
      {
        //key的名称
        key: "cartKey",
        //更改默认存储，我更改为localStorage
        storage: localStorage,
        // 可以选择哪些进入local存储，这样就不用全部都进去存储了
        // 默认是全部进去存储
        paths: ["list"],
      },
    ],
  },
});
